XMoni 版本更新日志
==================
作者: 隐者艾伦 (https://www.gongyesheji.org)
技术栈: C# .NET Framework 4.7.2, WinForms, LibreHardwareMonitorLib
──────────────────────────────────────────────────────────

V0.7.6 (2026-06-22)
────────────────
  [系统托盘]
  - 新增系统托盘图标(NotifyIcon)，双击恢复窗口
  - 最小化时自动隐藏到托盘
  - 托盘右键菜单与主窗口右键菜单一致
  - 关闭时自动清理托盘图标，消除残留

  [菜单对勾]
  - "切换置顶"、"系统托盘"、"Debug" 三项增加 ✓ 对勾指示
  - 图钉按钮、菜单点击、设置界面三路同步状态

  [发光效果修复]
  - ApplyColors() 增加 GlowEnabled 传播，修复设置中发光开关无效

  [CPU优化]
  - SparklineRenderer: min/max延迟计算(EnsureMinMax)，仅在Draw时按需计算
  - 字体全局缓存: _hdrFont/_titleFont/_cachedPctFont 消除每帧分配

V0.7.5 (2026-06-22)
────────────────
  [CPU优化]
  - SparklineRenderer: min/max延迟计算(EnsureMinMax)，仅在Draw时按需计算一次
  - 避免AddValue每次触发LINQ Min/Max全队列扫描
  - 字体全局缓存: _hdrFont/_titleFont/_cachedPctFont 消除每帧3+次Font分配
  - 减少GDI对象创建频率

  [系统托盘]
  - 新增系统托盘图标(NotifyIcon)，双击恢复窗口
  - 最小化时自动隐藏到托盘
  - 托盘右键菜单与主窗口右键菜单一致
  - 右键菜单新增系统托盘勾选项
  - 设置界面新增启用系统托盘图标复选框
  - AppSettings持久化TrayEnabled配置
  - 退出时自动清理托盘图标

V0.7.5 (2026-06-22)
────────────────
  [内存优化]
  - 标题栏字体缓存: _titleFont 避免每帧 new Font()
  - CPU/GPU标题行字体缓存: _hdrFont 统一复用
  - 硬盘百分比字体缓存: _cachedPctFont 避免每盘每帧创建
  - MainForm Dispose 增加 _hdrFont/_titleFont/_diskPanel 清理
  - DiskPanelRenderer Dispose 增加 _cachedPctFont 清理

  [代码审查]
  - 确认无循环引用或无限递归
  - GDI对象全部 using 包裹即时释放
  - WMI查询降频10周期一次，防止COM对象堆积
  - 传感器日志自动修剪防止无限增长

V0.7.5 (2026-06-22)
────────────────
  [标题栏]
  - 标题栏加入当前版本号显示: "XMoni - 桌面硬件仪表盘 V0.7.5 Power by 隐者艾伦"

  [CPU标题行]
  - 基准频率改为中文显示: "基准频率: 3000 MHz"（原 "Base: 3000 MHz"）

V0.7.4 (2026-06-22)
────────────────
  [GPU标题行]
  - GPU标题行显示完整GPU型号: "GPU1: NVIDIA GeForce RTX 4090 | 24GB VRAM | CUDA"
  - GPU仪表标题修复: "GPU1GPU负载" → "GPU1负载", "GPU1GPU频率" → "GPU1频率"

  [标题颜色]
  - CPU和GPU标题行文字改为纯白色，更清晰

V0.7.3 (2026-06-22)
────────────────
  [显存占用]
  - 显存占用左上角显示格式: "0.9/24G"（已用/总量），原仅显示 "0.9G"

V0.7.2 (2026-06-22)
────────────────
  [CPU/GPU信息标题行]
  - 新增CPU信息标题行: CPU型号 + 基准频率
  - 新增GPU信息标题行: GPU型号 + 显存容量 + CUDA支持
  - 仪表标题改为编号前缀: CPU1/GPU1

  [多GPU支持增强]
  - 多GPU时每块GPU独立显示标题行+仪表行

V0.7.1 (2026-06-22)
────────────────
  [CPU频率双曲线]
  - CPU频率折线图新增紫色虚线（基准/最大频率）
  - 蓝色实线（当前频率） + 紫色虚线（睿频基准）
  - SparklineRenderer 新增 AddValue2 / LineColor2 / HasSecondLine

  [传感器增强]
  - HardwareMonitor 新增 GetCpuName() / GetCpuBaseFreq()

V0.7.0 (2026-06-20)
────────────────
  [多GPU支持]
  - 新增 GpuInfo 数据结构，每GPU独立采集传感器
  - MainForm 动态创建 GpuRow 列表
  - GPU按类型优先级排序: NVIDIA > AMD > Intel

  [GPU负载精确匹配]
  - 传感器匹配完全重写: D3D 3D（优先）→ GPU Core（fallback）
  - GPU总负载 = max(D3D 3D, GPU Core, D3D Cuda)
  - CUDA折线图仅显示真实CUDA值

  [网络速度修复]
  - 三层过滤: 接口类型+中文关键词+隐藏适配器
  - 解决中文系统虚拟网卡流量叠加问题

  [字体自适应缩放]
  - 仪表/折线图标题数值随窗口大小缩放 (0.75x-1.55x)

  [分辨率预设]
  - Mini 600×500 / 小 800×600 / 中 1000×750 / 大 1250×1000

  [硬盘面板优化]
  - 长型号自动缩小字号，多盘统一字体
  - 顶部标题栏深色圆角背景 + 纯白文字

  [关于页面]
  - 版本号 V0.7.0，文字黑色，新增版本日志按钮


V0.6.34 (2026-06-20)
────────────────
  [多GPU支持架构]
  - HardwareMonitor.cs: 新增 GpuInfo 类，ReadGpuSensors() 返回 List<GpuInfo>
  - GPUs按优先级排序: NVIDIA(3) > AMD(2) > Intel(1)
  - 保留向后兼容的单GPU getter（返回primary GPU）
  - Debug信息显示所有GPU详情

  [动态UI布局]
  - MainForm.cs: List<GpuRow> 管理GPU行
  - 单GPU: 布局不变；多GPU: 行高均分，最低80px

  [Sensor匹配修复]
  - 新增generic fallback：任何未被排除的Load传感器都能匹配
  - 修复单独立显卡GPU负载不更新的问题

V0.6.33 (2026-06-20)
────────────────
  [双显卡兼容]
  - ReadGpuSensors() 重构为优先级系统：NVIDIA=3 > AMD=2 > Intel=1
  - 每GPU独立采集再按优先级合并，解决 Intel iGPU 覆盖 NVIDIA 数据的问题

  [网络显示修复]
  - FmtSpd() v<1 MB/s 时不再硬编码返回 "0.000"
  - 改为 v.ToString("F3") 保留实际值（16KB/s → 0.016 MB/s）
  - 标题字号：10pt → 9pt Regular

V0.6.32 (2026-06-19)
────────────────
  [顶部标题栏重构]
  - 高度100px，TopMargin=125
  - 纯白18pt Bold文字，水平和垂直居中
  - 半透明深色背景，文字内容 "XMoni - 桌面硬件仪表盘"
  - 后续调整为高度30px，间距10px，9pt Regular

V0.6.31 (2026-06-19)
────────────────
  [标题文字颜色]
  - GaugeControl/SparklineRenderer 标题颜色恢复为深黑 TextColor
  - 标题区增加半透明深色背景（后移除，用户要求透明）
  - titleH 三处统一为 Math.Max(50, GetHeight*2.5f)

  [圆角统一]
  - 硬盘面板圆角 6px → 20px（与画布背景一致）
  - 标题栏新增 FillTopRoundedRectangle 顶部圆角20px
  - GraphicsExtensions 新增 TopRoundedRect 路径方法

V0.6.31-V0.6.30 之前 (2026-06-19)
────────────────
  [UI精细化调整]
  - 标题文字改回深黑色，去除半透明背景
  - 标题栏字体加粗→Regular，文字改为"XMoni - 桌面硬件仪表盘  Power by 隐者艾伦"
  - 标题背景、间距、圆角持续微调

V0.6.14 (2026-06-19)
────────────────
  [4K/高DPI自适应]
  - 所有文本高度使用 Font.GetHeight(g) 动态计算
  - 字体缓存：_cachedValueFont/_cachedTitleFont，DPI变化>0.01才重建
  - 缩放上限 Math.Min(1.55, ...)，防止文字溢出
  - 值文本高度上限 Math.Min(30, ...)，防止重叠

  [Intel集显兼容]
  - GpuIntel 硬件类型纳入GPU匹配循环
  - D3D 3D 传感器匹配 Intel iGPU

  [性能优化]
  - WMI查询降频：CPU频率/温度每10次迭代（2s）执行一次
  - 传感器日志修剪：>3000字符时截断，每50次迭代执行
  - 网络接口过滤：跳过 tunnel/bluetooth/virtual/vethernet/Hyper-V/VPN

  [内存泄漏修复]
  - GDI句柄泄漏：Bitmap.GetHbitmap() 必须调用 DeleteObject(hBmp) 释放
  - 字体泄漏：缓存 _cachedValueFont/_cachedTitleFont 代替每次 new Font()
  - WMI查询节流：磁盘信息每30次debug循环缓存一次
  - 传感器日志上限12000字符，防止无限增长

V0.6.13 (2026-06-19)
────────────────
  [逐像素Alpha背景透明]
  - 使用 UpdateLayeredWindow + BLENDFUNCTION(AC_SRC_ALPHA)
  - CreateCompatibleBitmap 持久化DC，无每帧 GetHbitmap 泄漏
  - 背景透明（OpacityPercent控制），仪表/文字/图钉保持完全不透明
  - g.Clear(Color.Transparent) 每帧清除防止残影
  - 尺寸变化时重新创建GDI位图

V0.6.12 (2026-06-19)
────────────────
  [版本信息]
  - 左上角版本文字改为白色
  - 默认透明度90%

V0.6.11 (2026-06-19)
────────────────
  [启动优化]
  - 降低启动延迟至200ms
  - 背景透明度独立控制（不影响仪表/文字）

V0.6.10 (2026-06-19)
────────────────
  [右键菜单扩展]
  - 新增分辨率预设: Mini 600×600 / 小 800×800 / 中 1000×1000 / 大 1200×1200
  - 新增刷新率预设: 50/100/300/600/1000ms
  - 新增透明度预设: 100%/75%/50%/25%/0%
  - 仪表大字改为18pt Bold

V0.6.9 (2026-06-19)
────────────────
  [依赖性修复]
  - 补齐 BlackSharp.Core.dll（第三个缺失的LHM间接依赖）
  - CPU温度/频率开始正常采集

V0.6.8 (2026-06-19)
────────────────
  [DiskInfoToolkit.dll]
  - 补齐 DiskInfoToolkit.dll 及其传递依赖
  - 磁盘传感器完整可用

V0.6.7 (2026-06-19)
────────────────
  [磁盘映射诊断]
  - WMI Win32_DiskPartition.DiskIndex 精确映射
  - ASSOCIATORS OF 查询逻辑分区→物理磁盘
  - Debug日志输出磁盘映射详情

V0.6.4-V0.6.6 (2026-06-19)
────────────────
  [RAMSPDToolkit-NDD.dll]
  - 补齐 RAMSPDToolkit-NDD.dll（LHM第一个缺失依赖）
  - LHM Computer.Open() 首次成功

  [数据传感器]
  - CPU频率：WMI Win32_Processor.CurrentClockSpeed + PerformanceCounter % Processor Performance
  - CPU温度：WMI MSAcpi_ThermalZoneTemperature + LHM package/core fallback
  - 网络速度：NetworkInterface.GetIPv4Statistics() 增量计算
  - 仪表透明背景渲染
  - 盘符按物理磁盘排序
  - 显存容量GB格式显示

V0.6.3 (2026-06-19)
────────────────
  [诊断增强]
  - 传感器名全量转储：启动时记录所有LHM传感器（类型/名称/值）到Debug日志
  - GPU传感器匹配增强：兼容GpuIntel类型、放宽功率/温度匹配条件
  - VRAM占用回退计算（Used/Total）

  [网络]
  - 网络接口选择更宽泛匹配，跳过Hyper-V接口

  [UI]
  - DebugForm: Label→TextBox(ReadOnly/Multiline)，支持Ctrl+A全选 Ctrl+C复制
  - 磁盘映射：Win32_DiskPartition.DiskIndex精确映射物理磁盘→分区→盘符
  - 磁盘面板：移除"OK"状态行，保留百分比符号
  - 图钉按钮：三角+竖线图标，未按下灰色/按下淡红，按下时窗口TopMost

V0.6.2 (2026-06-19)
────────────────
  [传感器采集增强]
  - Computer初始化日志（列出所有硬件和传感器数量）
  - CPU Load: 匹配"total"传感器；CPU Temp: 匹配"package" fallback "core"
  - RTX 4090 GPU传感器命名兼容多种模式
  - Network: PerformanceCounter改为类字段（解决每次new返回0）
  - 新增 VRAM Used/Total 跟踪

  [Debug信息扩展]
  - 新增: CPU频率、GPU频率/功率、GPU HotSpot、MemJunction、CUDA、VRAM占用、显存使用量、磁盘详情

  [界面布局]
  - Row 2改为5列: GPU负载 | GPU频率 | CUDA(上)+显存(下) | GPU温度 | 显存温度
  - 第3列上下拆分: CUDA核心占用率(上), 显存占用(下)
  - 硬盘按WMI物理磁盘分组显示

  [中文化]
  - 全部标签中文化: CPU负载/CPU频率/内存占用/网络上行/网络下行/GPU负载/GPU频率/GPU温度/CUDA核心/显存占用/显存温度
  - SettingsForm: 外观/字体/刷新/关于 四个Tab全部中文化
  - 右键菜单: 设置/切换置顶/退出

  [磁盘]
  - WMI Win32_DiskDrive 获取物理磁盘型号
  - ASSOCIATORS 查询将逻辑分区映射到物理磁盘
  - 按物理磁盘分组显示其下盘符

  [稳定性]
  - 启动延迟800ms再开始渲染（等待LHM初始化）
  - WinForms Timer代替Task.Delay（兼容性更好）

V0.6.1 (2026-06-19)
────────────────
  [编译修复]
  - 修复 FileNotFoundException (LibreHardwareMonitorLib.dll)
  - .csproj中5个DLL引用Private改为true
  - 移除CleanupLib构建后删除目标
  - DLL文件直接复制到输出目录

  [数据修复]
  - 添加 _monitor.Start() 调用（之前遗漏导致数据不显示）
  - 添加500ms延迟确保LHM Computer初始化完成
  - Debug日志输出传感器状态（每10次迭代）

  [布局调整]
  - 第1行(5列): CPU Load(仪表) | CPU Freq(折线图) | Memory(折线图) | Net Up(仪表) | Net Down(仪表)
  - 第2行(4列): GPU Load(仪表) | GPU Freq(折线图) | GPU Temp(仪表) | VRAM Temp(仪表)
  - 第3行(通栏): 硬盘面板(支持多物理硬盘及分区)
  - 移除: CoreFreqChartRenderer, SystemInfoPanelRenderer
  - SparklineRenderer新增 CustomValueText(左上角)和 PowerText(右上角)
  - CPU频率折线图: 左上角当前频率+单位
  - 内存折线图: 左上角已用/总量GB，右上角百分比
  - GPU频率折线图: 左上角当前频率，右上角功率

V0.6.0 (2026-06-19)
────────────────
  [全面重构 - 背景]
  - 备份文件存在大量UTF-8编码损坏（中文字符三字节序列末尾字节截断）
  - 字符串字面量缺少闭合引号，注释吞噬后续代码，变量声明被注释吃掉
  - 逐字节修复不可持续，决定完全重写核心文件

  [HardwareMonitor.cs - 完全重写]
  - LHM Computer API传感器采集架构
  - PerformanceCounter内存/网络数据采集
  - WMI磁盘信息和总内存（替代Microsoft.VisualBasic引用）
  - 200ms采集周期（5Hz，提升GPU更新速度）
  - CUDA load含回退逻辑：无专用CUDA传感器时使用GPU core load

  [MainForm.cs - 完全重写 (560行)]
  - 自由缩放窗口（MinimumSize 600×400）
  - GDI+自定义渲染管道：GaugeRenderer/SparklineRenderer/DiskPanel/CoreFreqChart/SystemInfoPanel
  - 鼠标拖动、边框缩放（8方向）、右键上下文菜单
  - 设置对话框完全集成

  [渲染引擎 - 全部重写]
  - GaugeControl.cs (GaugeRenderer): 弧线仪表，渐变颜色，发光效果，阈值警告
  - SparklineRenderer.cs: 折线图，网格线，区域填充，数值覆盖层
  - DiskPanelRenderer.cs: 硬盘面板，WMI物理磁盘分组
  - SystemInfoPanelRenderer.cs: 系统信息面板
  - CoreFreqChartRenderer.cs: CPU核心频率图表
  - DebugForm.cs: 诊断窗口

  [SettingsForm.cs - 完全重写]
  - 英文UI（避免中文编码问题）
  - 颜色/字体/刷新率持久化到 settings.ini

  [代码清理]
  - 删除不再需要的文件: WinRing0.cs, WinRing0Loader.cs, SuperIOReader.cs, HWiNFOReader.cs, NativeMethods.cs
  - 删除: MainForm_Simple.cs, TestWmiTemp.cs
  - 编译结果: 0错误, 3警告

V0.5.x (2026-06-19)
────────────────
  V0.5h:
  - 修复折线图文字过大遮挡：ValueFont 12pt→9pt，数值区域高度20px→22px，topOffset 26→24
  - 窗口调整：最小窗口800×480→900×520，"小"预设800×480→900×520
  - 左上角显示"XMoni桌面硬件仪表盘 V20260619.51"+"作者：隐者艾伦"
  - 硬盘面板：背景色加深 Argb(38,55,55,115)→Argb(60,30,30,80)，盘符颜色近纯白
  - SettingsForm新增"关于"页面，作者"隐者艾伦"超链接→https://www.gongyesheji.org

  V0.5g:
  - GDI+自定义仪表盘渲染（GaugeRenderer）基础版本
  - 折线图渲染器（SparklineRenderer）初始实现
  - 硬盘面板（DiskPanelRenderer）
  - Debug诊断窗口
  - 可拖拽/缩放无边框窗口
  - 单实例保护（Named Mutex）

V0.1.x - V0.4.x (2026-06)
────────────────
  - 初始版本：LibreHardwareMonitor 作为传感器采集后端
  - 基础仪表盘界面（WinForms GDI+）
  - 设置持久化（settings.ini 明文配置）
  - PerformanceCounter 数据源集成
  - WMI 磁盘信息和总内存采集
  - CPU/GPU/内存/网络/硬盘五维监控
  - 窗口TopMost置顶、无边框拖拽
  - 右键菜单基础功能（设置/退出）